/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package ManagedBeans;

import Carrito.ProductoCantidad;
import Entidades.*;
import SessionBeans.CarritoDAO;
import SessionBeans.ProductosDAO;
import SessionBeans.RelacionesDAO;
import Utilidades.Utilidades;
import java.util.ArrayList;
import java.util.List;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

@ManagedBean
@SessionScoped
public class mbListProd {

    @EJB
    private RelacionesDAO relacionesDAO;
    @EJB
    public CarritoDAO carritoDAO;
    private int catId = 0;
    private int prodId = 0;
    private int cantidad = 1;
    private String msj = "";
    private String formaPago = "";
    private String tarNom = "";
    private String tarFech = "";
    public String username;
    public String password;
    public String warning = "";
    public String warningBueno = "";
    private String ultimaRuta;

    public mbListProd() {
    }

    
    
    public String getUltimaRuta() {
        return ultimaRuta;
    }

    public RelacionesDAO getRelacionesDAO() {
        return relacionesDAO;
    }

    public void setUltimaRuta(String ultimaRuta) {
        this.ultimaRuta = ultimaRuta;
    }

    public String getWarningBueno() {
        return warningBueno;
    }

    public void setWarningBueno(String warningBueno) {
        this.warningBueno = warningBueno;
    }

    public List<Producto> mostrarProductosAdmin() {
        String where = null;
        return( Utilidades.getProductosDAO().getProductos(null));
     
    }
    
    public List<Producto> mostrarProductos() {
        String where = this.getCatId() > 0 ? " p.categoria.id=(SELECT c.id FROM Categoria c WHERE c.id =" + this.getCatId() + ")" : null;
        return Utilidades.getProductosDAO().getProductos(where);
    }
    
    public List<Producto> mostrarPorductosTodos() {
        return Utilidades.getProductosDAO().getProductos(null);
    }

    public List<Producto> mostrarPorductosPorPedido(int idPedido) {
        Pedido pedido = Utilidades.getPedidosDAO().getPedido(idPedido);
        ArrayList<Producto> productos = new ArrayList<Producto>();
        for (Relacion r : pedido.getRelacionList()) {
            productos.add(r.getProducto1());
        }
        return productos;
    }

    public List<Categoria> mostrarCategorias() {
        return Utilidades.getCategoriasDAO().getCategorias(null);
    }

    public int getCatId() {
        return catId;
    }
    
    public boolean disponible(int id, int cantidad) {
        return Utilidades.getProductosDAO().getProducto(id).getStock() >= cantidad;
    }

    public void setCatId(int id) {
        this.catId = id;
    }

    public String accionar(int id) {
        this.setCatId(id);
        return "/front/productos/lista";
    }

    public String volver() {
        return ultimaRuta;
    }

    public String mostrarProducto(int id, String ultimaRuta) {
        this.setProdId(id);
        this.ultimaRuta = ultimaRuta;
        return "/front/productos/ver";
    }

    public String mostrarProductoPedido(int id, String ultimaRuta) {
        this.setProdId(id);
        this.ultimaRuta = ultimaRuta;
        return "/admin/productos/ver";
    }

    public String retonarALista() {
        return "/front/productos/lista";
    }

    public Producto obtenerProducto() {
        return Utilidades.getProductosDAO().getProducto(this.getProdId());
    }

    public String comprar() {
        Producto p = Utilidades.getProductosDAO().getProducto(this.getProdId());
        carritoDAO.addProducto(p, cantidad);
        return "/front/productos/lista";
    }

    public String eliminarProductoCarrito(int id) {
        Producto p = Utilidades.getProductosDAO().getProducto(id);
        carritoDAO.borrar(p);
        return "/front/carrito/lista";
    }

    public int getProdId() {
        return prodId;
    }

    public void setProdId(int prodId) {
        this.prodId = prodId;
    }

    public int getCantidad() {
        return cantidad;
    }

    public void setCantidad(int cantidad) {
        this.cantidad = cantidad;
    }

    public List<ProductoCantidad> devolverListaProdCan() {
        return (carritoDAO.getProductos());
    }

    public Double calcularTotal() {
        return (carritoDAO.calcularTotal());
    }

    public void confirmar() {
        System.out.println("LLEGA 1");
        this.setMsj("");
        int idCliente = this.carritoDAO.getIdLog();
        if (idCliente != 0) {
            Cliente cli = Utilidades.getClientesDAO().getCliente(idCliente);
            if (formaPago.equalsIgnoreCase("pago contra reembolso")) {
                System.out.println("LLEGA 2");
                this.setMsj(carritoDAO.persistir(cli, 0, 0, Utilidades.getPedidosDAO(), Utilidades.getProductosDAO(), Utilidades.getRelacionesDAO()));
            } else {
                if (this.tarFech.isEmpty() || this.tarNom.isEmpty()) {
                    this.setMsj("Debe rellenar los datos de su tarjeta.");
                } else {
                    this.setMsj(carritoDAO.persistir(cli, 0, 1, Utilidades.getPedidosDAO(), Utilidades.getProductosDAO(), Utilidades.getRelacionesDAO()));
                }
            }
        } else {
            this.setMsj("Debe registrarse o logearse para poder realizar compras.");
        }

    }
    
    public String irCarrito(){
        //forma de pago
        //mensaje
        this.setFormaPago("");
        this.setWarning("");
        this.setMsj("");
        this.setTarNom("");
        this.setTarFech("");
        return "/front/carrito/ver";
    }

    public String mbAcceder1() {
        List<Cliente> miLista = Utilidades.getClientesDAO().acceder1(username, password);
        boolean accedido = !miLista.isEmpty();
        if (accedido) {
            carritoDAO.setIdLog(miLista.get(0).getId());
            warningBueno = "Logeado Correctamente.";
            warning = "";
            username = "";
            password = "";
            return "";
        } else {
            username = "";
            password = "";
            warning = "Usuario o contraseña mal introducidos.";
            warningBueno = "";
            return "";
        }
    }

    public String stockCero(int cantStock) {
        return Utilidades.stockCero(cantStock);
    }

    public String getMsj() {
        return msj;
    }

    public void setMsj(String msj) {
        this.msj = msj;
    }

    public List<String> todosItems() {
        ArrayList<String> lista = new ArrayList<String>();
        lista.add("Pago contra reembolso");
        lista.add("Pago con tarjeta");
        return lista;
    }

    public String getFormaPago() {
        return formaPago;
    }

    public void setFormaPago(String formaPago) {
        this.formaPago = formaPago;
    }

    public String getTarFech() {
        return tarFech;
    }

    public void setTarFech(String tarFech) {
        this.tarFech = tarFech;
    }

    public String getTarNom() {
        return tarNom;
    }

    public void setTarNom(String tarNom) {
        this.tarNom = tarNom;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String newUsername) {
        this.username = newUsername;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String newPassword) {
        this.password = newPassword;
    }

    public String getWarning() {
        return warning;
    }

    public void setWarning(String warning) {
        this.warning = warning;
    }

    public CarritoDAO getCarritoDAO() {
        return carritoDAO;
    }

    public String cerrarSesion() {
        if (carritoDAO.getIdLog() != 0) {
            carritoDAO.setIdLog(0);
            warningBueno = "Sesión cerrada correctamente.";
            warning = "";
        }
        return "";
    }
    
    
    public String fotoProdCat(int id){
        
        ProductosDAO miProductoDAO = Utilidades.getProductosDAO();
        List<Producto> miListaProd = miProductoDAO.getProductos("p.categoria.id="+id);
        String img;
        
        if(miListaProd.isEmpty() ){
            img = "./imagenes/iconos/inod.jpg";
        }else{
            img = miListaProd.get(0).getImagen();
        }
        
        //String url = "./imagenes/productos/"+img;
        
        //System.out.println(img);
        return img;
    }
    
    
}



